#include "scheduler.h"

static scheduler_task_t tasks[] = {
	{OLED_proc,50,0},
    {buzzer_run_proc,1,0}
    //{BT_proc,100,0},
    //{servo_proc, 100, 0},
    //{Stepper_Read_Proc, 50, 0}
    //{RGB_proc, 500, 0}
};


uint16_t task_count = sizeof(tasks) / sizeof(tasks[0]);

// 定义一个函数，用于运行调度器
void scheduler_run(void) {
    // 获取当前时间
    uint32_t now = HAL_GetTick();
    // 遍历任务列表
    for (uint16_t i = 0; i < task_count; i++) {
        // 如果当前时间大于等于任务的上次运行时间加上任务的运行间隔
        if (now >= tasks[i].rate_ms + tasks[i].last_run) {
            // 更新任务的上次运行时间
            tasks[i].last_run = now; 
            // 执行任务的函数
            tasks[i].task_func();
        }
    }
}

